﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <windows.h>
//VS2022 WIN11环境测试
int main()
{
	FILE* pf = fopen("dtat.txt", "w");
	fputs("abcdef", pf);//先将代码放在输出缓冲区
	printf("睡眠10秒-已经写数据了，打开dtat.txt文件，发现文件没有内容\n");
	Sleep(10000);
	printf("刷新缓冲区\n");
	fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到⽂件（磁盘）
	//注：fflush 在⾼版本的VS上不能使⽤了
	printf("再睡眠10秒-此时，再次打开dtat.txt文件，文件有内容了\n");
	Sleep(10000);
	fclose(pf);
	//注：fclose在关闭⽂件的时候，也会刷新缓冲区
	pf = NULL;
	return 0;
}


//#include <stdio.h> //ftell
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	FILE* pf = fopen("dtat.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fputs("abcdefg", pf);
//	fseek(pf, 0, SEEK_SET);//注释后为abcdefdef
//	fputs("def", pf);//此时离起始位置3
//	int ret = ftell(pf);
//	printf("%d", ret);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}
// 
// #include <stdio.h> //fseek
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	FILE* pf = fopen("dtat.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fputs("abcdefg", pf);
//	fseek(pf, 0, SEEK_SET);//注释后为abcdefdef
//	fputs("def", pf);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}
// 
// 
// #include <stdio.h> //sscanf
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	struct S s = { "zhangshang",18,96.5f};
//	char arr[30] = { 0 };
//	sprintf(arr, "%s %d %f", s.name, s.age, s.score);
//	struct S t = { 0 };
//	sscanf(arr, "%s %d %f", t.name, &t.age, &t.score);
//	printf("%s %d %f", t.name, t.age, t.score);
//
//	return 0;
//}
// 
// #include <stdio.h> //sprintf
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	struct S s = { "zhangshang",18,96.5f};
//	char arr[30] = { 0 };
//	sprintf(arr, "%s%d%f", s.name, s.age, s.score);
//	printf("%s", arr);
//	return 0;
//}
// 
// #include <stdio.h> //fread
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	struct S s = { 0 };
//	FILE* pf = fopen("dtat.txt", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fread(&s, sizeof(struct S), 1, pf);
//	printf("%s %d %f", s.name, s.age, s.score);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}
// 
// #include <stdio.h> //fwrite
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	struct S s = { "zhangshang",18,96.5f };
//	FILE* pf = fopen("dtat.txt", "wb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fwrite(&s,sizeof(struct S),1,pf);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}
// 
// #include <stdio.h> //fprintf
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	struct S s = { "zhangshang",18,96.5f };
//	FILE* pf = fopen("dtat.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	fprintf(pf, "%s %d %f", s.name, s.age, s.score);
//
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

/*#include <stdio.h>  //fscanf
struct S
{
	char name[20];
	int age;
	float score;
};
int main()
{
	struct S s = { 0 };
	FILE* pf = fopen("dtat.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	fscanf(pf, "%s %d %f", s.name, &s.age, &s.score);
	fprintf(stdout, "%s %d %f", s.name, s.age, s.score);

	fclose(pf);
	pf = NULL;
	return 0;
}*/
// 
// #include <stdio.h>
//int main()
//{
//	FILE* pf = fopen("dtat.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	char arr[] = "xxxxxxxxx";
//	char*ret=fgets(arr, 10, pf); //改为10
//	if (ret == NULL)
//	{
//		if (feof(pf))
//			printf("遇到文件末尾了");
//		else if (ferror(pf))
//			printf("读取错误");
//	}
//	else
//		printf("%s", ret);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}
// 
// #include <stdio.h>
//int main()
//{
//	FILE* pf = fopen("dtat.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	char arr[] = "xxxxxxxxx";
//	char*ret=fgets(arr, 5, pf); //改为5
//	if (ret == NULL)
//	{
//		if (feof(pf))
//			printf("遇到文件末尾了");
//		else if (ferror(pf))
//			printf("读取错误");
//	}
//	else
//		printf("%s", ret);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

/*#include <stdio.h> //fgets
int main()
{
	FILE* pf = fopen("dtat.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	char arr[] = "xxxxxxxxx";
	char*ret=fgets(arr, 4, pf);
	if (ret == NULL)
	{
		if (feof(pf))
			printf("遇到文件末尾了");
		else if (ferror(pf))
			printf("读取错误");
	}
	else
		printf("%s", ret);
	fclose(pf);
	pf = NULL;
	return 0;
}*/
/*#include <stdio.h>
int main()
{
	FILE* pf = fopen("dtat.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	fputs("aef\n", pf);
	fputs("abcd\0def",pf);
	fclose(pf);
	pf = NULL;
	return 0;
}*/
